Loading the Music

In [3]:
import IPython.display as ipd
import librosa
import librosa.display
import matplotlib.pyplot as plt
In [4]:
filename = 'mixkit-island-beat-250.mp3'
In [5]:
island_beat = ipd.Audio(filename)
In [6]:
island_beat
Out[6]:
In [9]:
plt.figure(figsize=(15,4))
data,sample_rate1 = librosa.load(filename, sr=22050, mono=True, offset=0.0, duration=64, res_type='kaiser_best')
/Users/brianmcclanahan/opt/anaconda3/lib/python3.7/site-packages/librosa/core/audio.py:165: UserWarning: PySoundFile failed. Trying audioread instead.
  warnings.warn("PySoundFile failed. Trying audioread instead.")
<Figure size 1080x288 with 0 Axes>
In [12]:
sample_rate1
Out[12]:
22050
In [13]:
librosa.display.waveplot(data,sr=sample_rate1, max_points=50000.0, x_axis='time', offset=0.0, max_sr=1000)
Out[13]:
<matplotlib.collections.PolyCollection at 0x7fdda9e9d250>
In [18]:
import numpy as np

D = librosa.stft(data)
S_db = librosa.amplitude_to_db(np.abs(D), ref=np.max)
In [23]:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
img = librosa.display.specshow(S_db,
                               y_axis='log', x_axis='time', ax=ax)
In [85]:
times = librosa.frames_to_time(np.arange(S_db.shape[1]))
In [86]:
bass_signal = S_db[0:10, :]
In [87]:
bass_amplitude = bass_signal.sum(axis=0)
In [88]:
from plotly import graph_objects as go
In [45]:
island_beat
Out[45]:
In [89]:
fig = go.Figure()
fig.add_trace(
    go.Scattergl(
        #x=np.arange(bass_amplitude.shape[0]) *  (101 / bass_amplitude.shape[0]) , y=bass_amplitude
        x=times , y=bass_amplitude
    )
)
In [90]:
new_time_unit = times * 30
In [91]:
import pandas as pd

df = pd.DataFrame(
    {
        'time_unit': new_time_unit,
        'db_sum': bass_amplitude
    }
)
In [93]:
df.loc[:, 'time_unit_int'] = df.time_unit.astype(int)
In [98]:
db_df = df.groupby('time_unit_int').db_sum.mean().to_frame()
In [100]:
db_df.to_csv('music_db.csv', index=False)
In [101]:
db_df.shape
Out[101]:
(1920, 1)
In [ ]: